using System;

namespace PIM.Utilities
{
	/// <summary>
	/// While logging these are the different level of severety assigned to logger.
	/// </summary>
	public enum SeverityLevel
	{
		Information = 0,
		Warning = 1,
		Error = 2 
	}

	/// <summary>
	/// Database provider associated with SAFE. 
	/// </summary>
	public enum DBProvider
	{
		Progress,
		MSAccess,
		SQLServer,        
		Oracle,
		Paradox,
		OLEDB,
		ODBC,
        SQLExpress,
		Null
	}

	public enum FLOWDIRECTION
	{
		NONE = 0,
		READ = 1,
		WRITE = 2,
		BOTH = 3,
        BULKLOAD = 4
	}

	public enum FIELDNAMETYPE
	{
		SAFENAME = 0,
		MSSNAME = 1,
		DATASTORENAME
	}

	public enum OBJECTTYPE
	{
		OTHERS = 0,
		SYSTEM = 1,
		PERSON = 2,
		CLEARANCE = 3,
		PERSONCLEARANCE = 4,
        CARD = 5
	}

	public enum DATATYPE
	{
		OTHERS = -1,
		TEXT = 0,
		NUMBER = 1,
		DATE = 2,
		TIME = 3,
		DATETIME = 4,
		BOOLEAN = 5,
		IMAGE = 6,
        CURRENCY = 7
	}
	
	public enum XMLSCHEMATYPE 
	{
		SAFE,
		LENEL,
		CCURE,
        ODBC
	}

	public enum OPERATIONTYPE
	{
		AddRequest = 1,
		ModifyRequest = 2,
		DisableRequest = 3,
		DeleteRequest = 4,
		MasterDataFullLoad = 5,
		AddResponse = 6,
		ModifyResponse = 7
	}

	public enum TASKUSERTYPE
	{
		OTHERS = -1,
		PERSON = 0,
		USER = 1,
		USERGROUP = 2,
        DYNAMIC = 3
	}

    public enum AUDITOPERATIONSTATUS
    {
        FAILURE = 0,
        SUCCESS = 1,
        NOTPROCESSED = -1
    }

    public enum TaskStatus
    {
        Assigned = 1,
        Rejected, //2
        InProgress, //3
        Completed, //4
        Closed, //5
        Pending, //6
        Approved, //7
        Declined, //8
        Withdrawn, //9
        Split //10
    }


    public enum AccessLevelOwner
    {
        Person = 0,
        User = 1,
        UserGroup = 2,
        UserGroupOwner= 3,
        ZoneOwner = 4,
        ZoneAccessLevelOwner = 5,
        ProfileOwner = 6
    }

    public enum SafePolicyReason
    {
        NoOwner = -1,
        RequestorIsAnOwner = -2,
        NoAccessLevelsRequested = -3,
        AccessLevelOwnerIsOverridden = -4,
        NoZoneOwner = -5,
        NoZonesRequested = -6,
        NoOwnersAtCurrentOrHigherLevels = -7,
        NoZoneOwnersAtCurrentOrHigherLevels = -8,
        NoAccessProfilesRequested = -9,
        NoProfileOwner = -10,
        NoProfileOwnersAtCurrentOrHigherLevels = -11,
        ZoneAndAccessLevelOwnerIsOverridden = -12,
        AutoApprove = -13
    }

    [Flags]
    public enum ApproverLevel
    {
        None = 0x00,
        AreaOwner = 0x01,
        ProfileAreaOwner = 0x02,
        ZoneOwner = 0x04,
        ProfileZoneOwner = 0x08,
        ProfileOwner = 0x10
    }

    public enum CardStatusInDB
    {
        CARD_DOES_NOT_EXIST,
        CARD_WITH_SYSID_NULL,
        CARD_WITH_SYSID
    }
}
